macro get_from_default_dict

Описание

Этот макрос принимает путь (в виде списка ключей) и словарь в качестве входных данных, а затем проходит по словарю, следуя указанному пути. Если он успешно достигает конца пути, он возвращает значение в указанном месте в словаре. Если встречается ключ, которого нет в словаре до достижения конца пути, возвращается значение по умолчанию.

Аргументы

  • default_dict: Словарь для обхода.
  • path: Список ключей, представляющих путь для обхода в словаре. Ключи должны быть предоставлены в том порядке, в котором к ним будет осуществляться доступ.
  • default_return: (Необязательно) Значение, которое вернется, если конец пути не может быть достигнут. Если не предоставлено, возвращается пустая строка.

Функциональность

{% set result = get_from_default_dict(['ключ1', 'ключ2'], my_dict) %}

Это приведет к обходу my_dict, сначала переходя к ключу1, а затем к ключу2. Если ключ2 существует в словаре, расположенном по ключу1, возвращается значение. В противном случае возвращается пустая строка (или значение, указанное в default_return).

Пример

Учитывая следующий словарь:

{% set my_dict = {
    'fruit': {
        'color': 'red',
        'name': 'apple',
        'details': {
            'origin': 'Washington',
            'variety': 'Red Delicious'
        }
    },
    'animal': {
        'type': 'dog',
        'name': 'Rex',
        'details': {
            'breed': 'Labrador',
            'color': 'Black'
        }
    }
} %}

В этом примере будет возвращено 'red':

{% set result = datacraft.get_from_default_dict(['fruit', 'color'], my_dict) %}

В этом примере будет возвращено 'Labrador':

{% set result = datacraft.get_from_default_dict(['animal', 'details', 'breed'], my_dict) %}

В этом примере будет возвращено 'Washington':

{% set result = datacraft.get_from_default_dict(['fruit', 'details', 'origin'], my_dict) %}

В этом примере будет возвращено 'dog':

{% set result = datacraft.get_from_default_dict(['animal', 'type'], my_dict) %}

В этом примере будет возвращена пустая строка (since there is no 'taste' key under 'fruit'):

{% set result = datacraft.get_from_default_dict(['fruit', 'taste'], my_dict) %}